package Controlador;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Point;

import javax.swing.JDialog;
import javax.swing.JPanel;

/*
 * esta clase me permite poder generar la ventana principal, en ella agregaremos los diversos widgets que se ocuparan, ademas tendra
 * conexion con una clase controladora que estara a cargo de la ejecucion logica del programa, por otro lado extendera a la clase
 * JDialog con el fin de poder hacer uso de sus estados y comportamientos...
 */
public class VentanaPrincipal extends JDialog{

	private static final long serialVersionUID = 1L;//agregamos la serializable...
	
	//atributos de la clase...
	private Paneles panelesSur, panelesCentro, panelesEste, panelesOeste;//me permite poder generar los diversos paneles de la ventana...
	
	//constructor de la clase...
	public VentanaPrincipal(){
		
		this.panelesSur = new Paneles();//isntanciamos al atributo...
		this.panelesEste = new Paneles();//isntanciamos al atributo...
		this.panelesOeste = new Paneles();//isntanciamos al atributo...
		this.panelesCentro = new Paneles();//isntanciamos al atributo...
		
		//metodos asociados a la ventana...
		this.setTitle("Emulador CPU Ivana Orellana/ David Medina");
		this.setSize(new Dimension (1300,600));
		this.setVisible(true);
		this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
		this.setResizable(false);
		this.setLocation(new Point(30,100));
		//this.setAlwaysOnTop(true);
		
		//llamamos a los metodos que nos permiten poder agregar los widgets a la ventana principal...
		this.SectorEste();
		this.SectorNorte();
		this.SectorSur();
		this.SectorCentro();
		this.SectorOeste();
	}
	
	//metodo que nos permite poder agregar los widgets en el sector este...
	public void SectorEste(){
		
		this.getContentPane().add(BorderLayout.EAST, this.panelesEste.GeneraSectorEste());
	}
	
	//metodo que nos permite poder generar el sector norte de la ventana...
	public void SectorNorte(){
		
		this.getContentPane().add(BorderLayout.NORTH, new JPanel());
	}
	
	//metodo que nos permite pdoer generar el sector sur de la ventana...
	public void SectorSur(){
		
		this.getContentPane().add(BorderLayout.SOUTH, this.panelesSur.GeneraSectorSur());
	}
	
	//metodo que nos permite poder generar el sector centro de la ventana...
	public void SectorCentro(){
		
		this.getContentPane().add(BorderLayout.CENTER, this.panelesCentro.GenerarSectorCentro());
	}
	
	//metodo que nos permite poder generar el sector oeste de la ventana...
	public void SectorOeste(){
		
		this.getContentPane().add(BorderLayout.WEST, this.panelesOeste.GenerarSectorOeste());
	}
	
	//tanda de getters que permiten poder acceder a los distintos estados de la clase con el fin de poder generar el encapsulamiento
	public Paneles getPanelesSur() {
		return panelesSur;
	}

	public Paneles getPanelesCentro() {
		return panelesCentro;
	}

	public Paneles getPanelesEste() {
		return panelesEste;
	}

	public Paneles getPanelesOeste() {
		return panelesOeste;
	}
}